Keyword:
哇終於到了這天,30天的鐵人賽沒想到我居然能夠撐完.
當初選擇KMM的原因主要是聽了我們親愛的團長,JetBrain的技術傳教士聖佑,與GDG Taipei的主辦人阿達舉辦的KMM Workshop,介紹了這個嶄新的跨平台框架.在學習過程中,我逐漸對KMM有興趣.尤其是KMM可以輕易的引入目前的專案這點,對於已有一定規模Code Base的公司是個大吸力.所以...第二次KMM Workshop在台中舉辦時,我又特地跑到台中參加,再次重聽並且加強印象.
KMM能不能在這場跨平台框架中取得勝利還很難說,Flutter來勢洶洶而RN已經行之有年,無論哪個都不是易與的對手,也因此我第一天所下的標題是:"一個全新的挑戰者",而不是什麼“跨平台的解答"等等的,現在說這個還為時過早.不過KMM具有相當大的野心,他不僅想要當Android與iOS的跨平台框架,甚至想要web與桌面應用一起統一.(不過這個大餅Flutter也畫了,看來是殊途同歸啊)
既然是最後了,就來回顧我們到底學習了什麼,如果同主題有複數天,連結就放該主題的第一天
首先我們先介紹了KMM是什麼(Day1)
老調重彈的聊起了架構,因為架構在KMM中特別重要,用的好事半功倍,用不好不如回去寫兩份Code(Day2,Day3)
再來,我們建立了第一個KMM專案(Day4,Day5,Day6)
並且說明,為什麼KMM可以做到這麼神奇事情,當看過KMM實際跑起來的樣子後會更有感覺(Day7)
要準備開始修改專案內容,但是在那之前,為了管理好KMM專案內複雜的依賴關係,我們使用Kotlin DSL來管理(Day8,Day9)
我們使用Ktor來進行網路請求,Ktor本身就有設計給跨平台使用(Day10)
Ktor幫我們取得的資料,顯示在原生畫面上,KMM這部分的View層實現就交給使用者,在Android端我們使用傳統的XML,而iOS我們用了swiftUI.(Day11,Day12)
(原本有空本來想要使用Android的Compose的結果根本沒時間,不過我們這次有團員有寫Compose的文章喔,有興趣可以移步那邊)
然後我們深入聊了一下各平台如果有不同實作,所使用的Expect與Actual關鍵字,之後也常常使用到(Day13)
接下來,也聊到之後佔了非常重要的工具Coroutine(Day14,Day15)
我們進行設計,讓沒有Coroutine環境的iOS也能使用到Coroutine(其實就是多一層封裝)(Day16,Day17)
專案開始變大了,為了降低耦合程度我們引入了Koin來進行依賴注入(Day18,Day19,Day20,Day21)
開始使用資料庫來進行資料的長久化,SQLDelight可以幫我達成這個任務,並且SQLDelight還是跨平台的!(Day22,Day23,Day24)
功能都完成了,最後來寫測試吧(Day25,Day26,Day27)
剩下的時間,一天是如何讓現成專案也能KMM(Day28)
另外一天則是跟其他跨平台框架比較,在開發過一個KMM專案後更有感覺(Day29)
最後一篇就是這篇啦~
對了,如果像我一樣,對KMM有興趣的,聖佑將會在這期(2021年)的MOPCON以KMM為主題,進行一次分享,並且這次MOPCON是線上,所以不用像我一樣特地跑到台中去參加.
這次會在10/23 、10/24舉行
由於KMM的特性,專案結構較為複雜,也許會較難閱讀.在15號比賽結束前我還會繼續修改文章內容,讓文章的內容更加充實與易懂.
感謝一直陪伴我的各位讀者,以及一起參團的瘋狂團員們,沒有你們的支持我是絕對撐不下去的!